package kr.co.bettersoft.waitnumbercustomer.activity;

import kr.co.bettersoft.waitnumbercustomer.fragment.FragmentHome;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.view.Window;

/**
 * IntroActivity
 * 어플의 초기 로딩 화면이다.
 * 2초간 로딩화면을 보여준 후 메인 페이지로 이동한다. 
 * DB에 저장된 사용자 QR 이미지가 있을 경우 읽어서 메인페이지로 전달한다.
 * 
 * @author blue
 *
 */
public class IntroActivity extends Activity {
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 변수
	
	String TAG = "IntroActivity";


	//--------------------------------------- SQLite ---------------------------------------//
	// 테이블 생성 쿼리.
	private static final String Q_CREATE_TABLE = "CREATE TABLE user_info (" +
	"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
	"key_of_data TEXT," +
	"value_of_data TEXT" +
	");" ;

	// 테이블 조회 쿼리
	private final String Q_GET_LIST = "SELECT * FROM user_info"
		+ " WHERE key_of_data = 'user_img'";

	SQLiteDatabase db = null;
	
	/**
	 * initDB
	 *  DB 초기화한다.
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void initDB(){
		Log.i(TAG,"initDB");
		// db 관련 작업 초기화, DB 열어 SQLiteDatabase 인스턴스 생성          db 열거나 없으면 생성
		if(db== null ){
			db= openOrCreateDatabase( "sqliteWaitNumDB.db",             
					SQLiteDatabase.CREATE_IF_NECESSARY ,null );
		}
		// 테이블에서 데이터 가져오기 전 테이블 생성 확인 없으면 생성.
		checkTableIsCreated(db);
	}
	/**
	 * checkTableIsCreated
	 *  db 테이블을 준비한다
	 *
	 * @param db
	 * @param
	 * @return
	 */
	public void checkTableIsCreated(SQLiteDatabase db){		// user_info 라는 이름의 테이블을 검색하고 없으면 생성.
		Log.i(TAG, "checkTableIsCreated");
		Cursor c = db.query( "sqlite_master" , new String[] { "count(*)"}, "name=?" , new String[] { "user_info"}, null ,null , null);
		Integer cnt=0;
		c.moveToFirst();                                 // 커서를 첫라인으로 옮김
		while(c.isAfterLast()== false ){                   // 마지막 라인이 될때까지 1씩 증가하면서 본다
			cnt=c.getInt(0);
			c.moveToNext();
		}
		//커서는 사용 직후 닫는다
		c.close();
		//테이블 없으면 생성
		if(cnt==0){
			db.execSQL(Q_CREATE_TABLE);
		}
	}
	/**
	 * getDBData
	 *  db 데이터를 꺼낸다
	 *
	 * @param
	 * @param
	 * @return
	 */
	public void getDBData(){				// db 에 있는 데이터 꺼내어 사용
		Log.i(TAG, "getDBData");
		String data_key="";
		String data_value="";
		// 조회
		Cursor c = db.rawQuery( Q_GET_LIST, null );
		if(c.getCount()==0){
			Log.i(TAG, "saved QR Image NotExist");
		}else{
			Log.i(TAG, "saved QR Image Exist");				// 데이터 있으면 꺼내서 사용함.
			c.moveToFirst();                                 // 커서를 첫라인으로 옮김
			while(c.isAfterLast()== false ){                   // 마지막 라인이 될때까지 1씩 증가하면서 본다
				data_key = c.getString(1);	
				data_value = c.getString(2);	
				c.moveToNext();
			}
			byte[] decodedString = Base64.decode(data_value, Base64.DEFAULT); 
			Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
//			MyQRScreenActivity.savedBMP = decodedByte;
			Log.i(TAG,"pass QR img");
		}
		c.close();
	}
	////-------------------------------------SQLite --------------------------------------////
	

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature( Window.FEATURE_NO_TITLE );		// no title
		setContentView(R.layout.intro_activity);

		Log.d(TAG,"IntroActivity onCreate");

//		initDB();
//		getDBData();
//		db.close();
		
		nextProcessing();		// 다음 단계 : 2초 지연 후 메인 탭으로
	}

	/**
	 *  nextProcessing
	 *  2초 지연 후 메인 탭으로 이동한다.
	 *  
	 */
	public void nextProcessing(){
		new Thread(
				new Runnable(){
					public void run(){
						try{
							Thread.sleep(2000);		// 초기 로딩 시간. 2초간 인트로 화면 보여줌
							Intent intent;
//							intent = new Intent(IntroActivity.this, MainTabsActivity.class);
							intent = new Intent(IntroActivity.this, FragmentHome.class);
							Log.d(TAG,"Go to FragmentHome Activity");
							startActivity(intent);
							finish();
						}catch(InterruptedException ie){
							ie.printStackTrace();
						}
					}
				}
		).start();
	}

}
